@不喜丶不悲
2年前 提问
1个回答

MapReduce编程模型有哪些特点

在下炳尚
2年前

MapReduce编程模型有以下这些特点:

  • 简单而强大的接口,所有的算法需要改写成map函数和reduce函数实现。搜索引擎领域中的许多数据处理程序可以用MapReduce简单直观地改写。对用户而言,只要是能用map和reduce表示的算法,就可以简单高效的实现,不必关心底层细节。

  • 数据类型采用key/value对,一种非常简单和灵活的数据组织形式。分布式文件系统中的各种常见类型数据可以作为输入数据,并行数据库中的表也可以作为输入数据。实际使用中,只需将输入数据解释为key/value对的数据格式即可。

  • 高度并行执行,没有复杂的消息传递机制。map节点之间、reduce节点之间没有消息传递,独立完成主控节点分配的任务。map节点和reduce节点之间存在简单的消息传递,map节点存储中间计算结果,并根据分区函数将不同分区的数据传递给第二阶段的reduce节点。

  • 运行于无共享架构的商用计算机集群之上。每个节点有自己的本地存储,这些本地存储组成了MapReduce下面的分布式文件系统。任务分配考虑数据局部性,本地存储可以存放中间计算结果。这种架构有很好的可扩展性,但同时要求MapReduce有很强的容错能力。

  • 适用于大规模数据分析处理,不适用于交互频繁的操作。MapReduce可以满足大规模数据的高吞吐率要求,并不适用于实时性强的交互处理。另外,MapReduce 适用于大文件的处理,不适用于大量的小文件处理,要处理大量的小文件需要先对这些小文件进行合并预处理。